define("value/datetimepicker/3.1.3/datetimepicker-debug", [ "./datetimepicker-debug.css", "gallery/bootstrap/3.2.0/bootstrap-debug", "$-debug", "gallery/moment/2.8.3/moment_zh-cn-debug" ], function(require, exports, module) {
    require("./datetimepicker-debug.css");
    require("gallery/bootstrap/3.2.0/bootstrap-debug");
    (function(root, factory) {
        "use strict";
        if (typeof define === "function" && define.amd) {
            // AMD is used - Register as an anonymous module.
            define([ "jquery", "moment" ], factory);
        } else if (typeof exports === "object") {
            factory(require("$-debug"), require("gallery/moment/2.8.3/moment_zh-cn-debug"));
        } else {
            // Neither AMD or CommonJS used. Use global variables.
            if (!jQuery) {
                throw new Error("bootstrap-datetimepicker requires jQuery to be loaded first");
            }
            if (!moment) {
                throw new Error("bootstrap-datetimepicker requires moment.js to be loaded first");
            }
            factory(root.jQuery, moment);
        }
    })(this, function($, moment) {
        "use strict";
        if (typeof moment === "undefined") {
            throw new Error("momentjs is required");
        }
        var dpgId = 0, DateTimePicker = function(element, options) {
            var defaults = $.fn.datetimepicker.defaults, icons = {
                time: "glyphicon glyphicon-time",
                date: "glyphicon glyphicon-calendar",
                up: "glyphicon glyphicon-chevron-up",
                down: "glyphicon glyphicon-chevron-down"
            }, picker = this, errored = false, dDate, init = function() {
                var icon = false, localeData, rInterval;
                picker.options = $.extend({}, defaults, options);
                picker.options.icons = $.extend({}, icons, picker.options.icons);
                picker.element = $(element);
                dataToOptions();
                if (!(picker.options.pickTime || picker.options.pickDate)) {
                    throw new Error("Must choose at least one picker");
                }
                picker.id = dpgId++;
                moment.locale(picker.options.language);
                picker.date = moment();
                picker.unset = false;
                picker.isInput = picker.element.is("input");
                picker.component = false;
                if (picker.element.hasClass("input-group")) {
                    if (picker.element.find(".datepickerbutton").size() === 0) {
                        //in case there is more then one 'input-group-addon' Issue #48
                        picker.component = picker.element.find('[class^="input-group-"]');
                    } else {
                        picker.component = picker.element.find(".datepickerbutton");
                    }
                }
                picker.format = picker.options.format;
                localeData = moment().localeData();
                if (!picker.format) {
                    picker.format = picker.options.pickDate ? localeData.longDateFormat("L") : "";
                    if (picker.options.pickDate && picker.options.pickTime) {
                        picker.format += " ";
                    }
                    picker.format += picker.options.pickTime ? localeData.longDateFormat("LT") : "";
                    if (picker.options.useSeconds) {
                        if (localeData.longDateFormat("LT").indexOf(" A") !== -1) {
                            picker.format = picker.format.split(" A")[0] + ":ss A";
                        } else {
                            picker.format += ":ss";
                        }
                    }
                }
                picker.use24hours = picker.format.toLowerCase().indexOf("a") < 0 && picker.format.indexOf("h") < 0;
                if (picker.component) {
                    icon = picker.component.find("span");
                }
                if (picker.options.pickTime) {
                    if (icon) {
                        icon.addClass(picker.options.icons.time);
                    }
                }
                if (picker.options.pickDate) {
                    if (icon) {
                        icon.removeClass(picker.options.icons.time);
                        icon.addClass(picker.options.icons.date);
                    }
                }
                picker.options.widgetParent = typeof picker.options.widgetParent === "string" && picker.options.widgetParent || picker.element.parents().filter(function() {
                    return "scroll" === $(this).css("overflow-y");
                }).get(0) || "body";
                picker.widget = $(getTemplate()).appendTo(picker.options.widgetParent);
                picker.minViewMode = picker.options.minViewMode || 0;
                if (typeof picker.minViewMode === "string") {
                    switch (picker.minViewMode) {
                      case "months":
                        picker.minViewMode = 1;
                        break;

                      case "years":
                        picker.minViewMode = 2;
                        break;

                      default:
                        picker.minViewMode = 0;
                        break;
                    }
                }
                picker.viewMode = picker.options.viewMode || 0;
                if (typeof picker.viewMode === "string") {
                    switch (picker.viewMode) {
                      case "months":
                        picker.viewMode = 1;
                        break;

                      case "years":
                        picker.viewMode = 2;
                        break;

                      default:
                        picker.viewMode = 0;
                        break;
                    }
                }
                picker.viewMode = Math.max(picker.viewMode, picker.minViewMode);
                picker.options.disabledDates = indexGivenDates(picker.options.disabledDates);
                picker.options.enabledDates = indexGivenDates(picker.options.enabledDates);
                picker.startViewMode = picker.viewMode;
                picker.setMinDate(picker.options.minDate);
                picker.setMaxDate(picker.options.maxDate);
                fillDow();
                fillMonths();
                fillHours();
                fillMinutes();
                fillSeconds();
                update();
                showMode();
                if (!getPickerInput().prop("disabled")) {
                    attachDatePickerEvents();
                }
                if (picker.options.defaultDate !== "" && getPickerInput().val() === "") {
                    picker.setValue(picker.options.defaultDate);
                }
                if (picker.options.minuteStepping !== 1) {
                    rInterval = picker.options.minuteStepping;
                    picker.date.minutes(Math.round(picker.date.minutes() / rInterval) * rInterval % 60).seconds(0);
                }
            }, getPickerInput = function() {
                var input;
                if (picker.isInput) {
                    return picker.element;
                }
                input = picker.element.find(".datepickerinput");
                if (input.size() === 0) {
                    input = picker.element.find("input");
                } else if (!input.is("input")) {
                    throw new Error('CSS class "datepickerinput" cannot be applied to non input element');
                }
                return input;
            }, dataToOptions = function() {
                var eData;
                if (picker.element.is("input")) {
                    eData = picker.element.data();
                } else {
                    eData = picker.element.find("input").data();
                }
                if (eData.dateFormat !== undefined) {
                    picker.options.format = eData.dateFormat;
                }
                if (eData.datePickdate !== undefined) {
                    picker.options.pickDate = eData.datePickdate;
                }
                if (eData.datePicktime !== undefined) {
                    picker.options.pickTime = eData.datePicktime;
                }
                if (eData.dateUseminutes !== undefined) {
                    picker.options.useMinutes = eData.dateUseminutes;
                }
                if (eData.dateUseseconds !== undefined) {
                    picker.options.useSeconds = eData.dateUseseconds;
                }
                if (eData.dateUsecurrent !== undefined) {
                    picker.options.useCurrent = eData.dateUsecurrent;
                }
                if (eData.calendarWeeks !== undefined) {
                    picker.options.calendarWeeks = eData.calendarWeeks;
                }
                if (eData.dateMinutestepping !== undefined) {
                    picker.options.minuteStepping = eData.dateMinutestepping;
                }
                if (eData.dateMindate !== undefined) {
                    picker.options.minDate = eData.dateMindate;
                }
                if (eData.dateMaxdate !== undefined) {
                    picker.options.maxDate = eData.dateMaxdate;
                }
                if (eData.dateShowtoday !== undefined) {
                    picker.options.showToday = eData.dateShowtoday;
                }
                if (eData.dateCollapse !== undefined) {
                    picker.options.collapse = eData.dateCollapse;
                }
                if (eData.dateLanguage !== undefined) {
                    picker.options.language = eData.dateLanguage;
                }
                if (eData.dateDefaultdate !== undefined) {
                    picker.options.defaultDate = eData.dateDefaultdate;
                }
                if (eData.dateDisableddates !== undefined) {
                    picker.options.disabledDates = eData.dateDisableddates;
                }
                if (eData.dateEnableddates !== undefined) {
                    picker.options.enabledDates = eData.dateEnableddates;
                }
                if (eData.dateIcons !== undefined) {
                    picker.options.icons = eData.dateIcons;
                }
                if (eData.dateUsestrict !== undefined) {
                    picker.options.useStrict = eData.dateUsestrict;
                }
                if (eData.dateDirection !== undefined) {
                    picker.options.direction = eData.dateDirection;
                }
                if (eData.dateSidebyside !== undefined) {
                    picker.options.sideBySide = eData.dateSidebyside;
                }
                if (eData.dateDaysofweekdisabled !== undefined) {
                    picker.options.daysOfWeekDisabled = eData.dateDaysofweekdisabled;
                }
            }, place = function() {
                var position = "absolute", offset = picker.component ? picker.component.offset() : picker.element.offset(), $window = $(window), placePosition;
                picker.width = picker.component ? picker.component.outerWidth() : picker.element.outerWidth();
                offset.top = offset.top + picker.element.outerHeight();
                if (picker.options.direction === "up") {
                    placePosition = "top";
                } else if (picker.options.direction === "bottom") {
                    placePosition = "bottom";
                } else if (picker.options.direction === "auto") {
                    if (offset.top + picker.widget.height() > $window.height() + $window.scrollTop() && picker.widget.height() + picker.element.outerHeight() < offset.top) {
                        placePosition = "top";
                    } else {
                        placePosition = "bottom";
                    }
                }
                if (placePosition === "top") {
                    offset.bottom = $window.height() - offset.top + picker.element.outerHeight() + 3;
                    picker.widget.addClass("top").removeClass("bottom");
                } else {
                    offset.top += 1;
                    picker.widget.addClass("bottom").removeClass("top");
                }
                if (picker.options.width !== undefined) {
                    picker.widget.width(picker.options.width);
                }
                if (picker.options.orientation === "left") {
                    picker.widget.addClass("left-oriented");
                    offset.left = offset.left - picker.widget.width() + 20;
                }
                if (isInFixed()) {
                    position = "fixed";
                    offset.top -= $window.scrollTop();
                    offset.left -= $window.scrollLeft();
                }
                if ($window.width() < offset.left + picker.widget.outerWidth()) {
                    offset.right = $window.width() - offset.left - picker.width;
                    offset.left = "auto";
                    picker.widget.addClass("pull-right");
                } else {
                    offset.right = "auto";
                    picker.widget.removeClass("pull-right");
                }
                if (placePosition === "top") {
                    picker.widget.css({
                        position: position,
                        bottom: offset.bottom,
                        top: "auto",
                        left: offset.left,
                        right: offset.right
                    });
                } else {
                    picker.widget.css({
                        position: position,
                        top: offset.top,
                        bottom: "auto",
                        left: offset.left,
                        right: offset.right
                    });
                }
            }, notifyChange = function(oldDate, eventType) {
                if (moment(picker.date).isSame(moment(oldDate)) && !errored) {
                    return;
                }
                errored = false;
                picker.element.trigger({
                    type: "dp.change",
                    date: moment(picker.date),
                    oldDate: moment(oldDate)
                });
                if (eventType !== "change") {
                    picker.element.change();
                }
            }, notifyError = function(date) {
                errored = true;
                picker.element.trigger({
                    type: "dp.error",
                    date: moment(date, picker.format, picker.options.useStrict)
                });
            }, update = function(newDate) {
                moment.locale(picker.options.language);
                var dateStr = newDate;
                if (!dateStr) {
                    dateStr = getPickerInput().val();
                    if (dateStr) {
                        picker.date = moment(dateStr, picker.format, picker.options.useStrict);
                    }
                    if (!picker.date) {
                        picker.date = moment();
                    }
                }
                picker.viewDate = moment(picker.date).startOf("month");
                fillDate();
                fillTime();
            }, fillDow = function() {
                moment.locale(picker.options.language);
                var html = $("<tr>"), weekdaysMin = moment.weekdaysMin(), i;
                if (picker.options.calendarWeeks === true) {
                    html.append('<th class="cw">#</th>');
                }
                if (moment().localeData()._week.dow === 0) {
                    // starts on Sunday
                    for (i = 0; i < 7; i++) {
                        html.append('<th class="dow">' + weekdaysMin[i] + "</th>");
                    }
                } else {
                    for (i = 1; i < 8; i++) {
                        if (i === 7) {
                            html.append('<th class="dow">' + weekdaysMin[0] + "</th>");
                        } else {
                            html.append('<th class="dow">' + weekdaysMin[i] + "</th>");
                        }
                    }
                }
                picker.widget.find(".datepicker-days thead").append(html);
            }, fillMonths = function() {
                moment.locale(picker.options.language);
                var html = "", i, monthsShort = moment.monthsShort();
                for (i = 0; i < 12; i++) {
                    html += '<span class="month">' + monthsShort[i] + "</span>";
                }
                picker.widget.find(".datepicker-months td").append(html);
            }, fillDate = function() {
                if (!picker.options.pickDate) {
                    return;
                }
                moment.locale(picker.options.language);
                var year = picker.viewDate.year(), month = picker.viewDate.month(), startYear = picker.options.minDate.year(), startMonth = picker.options.minDate.month(), endYear = picker.options.maxDate.year(), endMonth = picker.options.maxDate.month(), currentDate, prevMonth, nextMonth, html = [], row, clsName, i, days, yearCont, currentYear, months = moment.months();
                picker.widget.find(".datepicker-days").find(".disabled").removeClass("disabled");
                picker.widget.find(".datepicker-months").find(".disabled").removeClass("disabled");
                picker.widget.find(".datepicker-years").find(".disabled").removeClass("disabled");
                picker.widget.find(".datepicker-days th:eq(1)").text(months[month] + " " + year);
                prevMonth = moment(picker.viewDate, picker.format, picker.options.useStrict).subtract(1, "months");
                days = prevMonth.daysInMonth();
                prevMonth.date(days).startOf("week");
                if (year === startYear && month <= startMonth || year < startYear) {
                    picker.widget.find(".datepicker-days th:eq(0)").addClass("disabled");
                }
                if (year === endYear && month >= endMonth || year > endYear) {
                    picker.widget.find(".datepicker-days th:eq(2)").addClass("disabled");
                }
                nextMonth = moment(prevMonth).add(42, "d");
                while (prevMonth.isBefore(nextMonth)) {
                    if (prevMonth.weekday() === moment().startOf("week").weekday()) {
                        row = $("<tr>");
                        html.push(row);
                        if (picker.options.calendarWeeks === true) {
                            row.append('<td class="cw">' + prevMonth.week() + "</td>");
                        }
                    }
                    clsName = "";
                    if (prevMonth.year() < year || prevMonth.year() === year && prevMonth.month() < month) {
                        clsName += " old";
                    } else if (prevMonth.year() > year || prevMonth.year() === year && prevMonth.month() > month) {
                        clsName += " new";
                    }
                    if (prevMonth.isSame(moment({
                        y: picker.date.year(),
                        M: picker.date.month(),
                        d: picker.date.date()
                    }))) {
                        clsName += " active";
                    }
                    if (isInDisableDates(prevMonth, "day") || !isInEnableDates(prevMonth)) {
                        clsName += " disabled";
                    }
                    if (picker.options.showToday === true) {
                        if (prevMonth.isSame(moment(), "day")) {
                            clsName += " today";
                        }
                    }
                    if (picker.options.daysOfWeekDisabled) {
                        for (i = 0; i < picker.options.daysOfWeekDisabled.length; i++) {
                            if (prevMonth.day() === picker.options.daysOfWeekDisabled[i]) {
                                clsName += " disabled";
                                break;
                            }
                        }
                    }
                    row.append('<td class="day' + clsName + '">' + prevMonth.date() + "</td>");
                    currentDate = prevMonth.date();
                    prevMonth.add(1, "d");
                    if (currentDate === prevMonth.date()) {
                        prevMonth.add(1, "d");
                    }
                }
                picker.widget.find(".datepicker-days tbody").empty().append(html);
                currentYear = picker.date.year();
                months = picker.widget.find(".datepicker-months").find("th:eq(1)").text(year).end().find("span").removeClass("active");
                if (currentYear === year) {
                    months.eq(picker.date.month()).addClass("active");
                }
                if (year - 1 < startYear) {
                    picker.widget.find(".datepicker-months th:eq(0)").addClass("disabled");
                }
                if (year + 1 > endYear) {
                    picker.widget.find(".datepicker-months th:eq(2)").addClass("disabled");
                }
                for (i = 0; i < 12; i++) {
                    if (year === startYear && startMonth > i || year < startYear) {
                        $(months[i]).addClass("disabled");
                    } else if (year === endYear && endMonth < i || year > endYear) {
                        $(months[i]).addClass("disabled");
                    }
                }
                html = "";
                year = parseInt(year / 10, 10) * 10;
                yearCont = picker.widget.find(".datepicker-years").find("th:eq(1)").text(year + "-" + (year + 9)).parents("table").find("td");
                picker.widget.find(".datepicker-years").find("th").removeClass("disabled");
                if (startYear > year) {
                    picker.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled");
                }
                if (endYear < year + 9) {
                    picker.widget.find(".datepicker-years").find("th:eq(2)").addClass("disabled");
                }
                year -= 1;
                for (i = -1; i < 11; i++) {
                    html += '<span class="year' + (i === -1 || i === 10 ? " old" : "") + (currentYear === year ? " active" : "") + (year < startYear || year > endYear ? " disabled" : "") + '">' + year + "</span>";
                    year += 1;
                }
                yearCont.html(html);
            }, fillHours = function() {
                moment.locale(picker.options.language);
                var table = picker.widget.find(".timepicker .timepicker-hours table"), html = "", current, i, j;
                table.parent().hide();
                if (picker.use24hours) {
                    current = 0;
                    for (i = 0; i < 6; i += 1) {
                        html += "<tr>";
                        for (j = 0; j < 4; j += 1) {
                            html += '<td class="hour">' + padLeft(current.toString()) + "</td>";
                            current++;
                        }
                        html += "</tr>";
                    }
                } else {
                    current = 1;
                    for (i = 0; i < 3; i += 1) {
                        html += "<tr>";
                        for (j = 0; j < 4; j += 1) {
                            html += '<td class="hour">' + padLeft(current.toString()) + "</td>";
                            current++;
                        }
                        html += "</tr>";
                    }
                }
                table.html(html);
            }, fillMinutes = function() {
                var table = picker.widget.find(".timepicker .timepicker-minutes table"), html = "", current = 0, i, j, step = picker.options.minuteStepping;
                table.parent().hide();
                if (step === 1) {
                    step = 5;
                }
                for (i = 0; i < Math.ceil(60 / step / 4); i++) {
                    html += "<tr>";
                    for (j = 0; j < 4; j += 1) {
                        if (current < 60) {
                            html += '<td class="minute">' + padLeft(current.toString()) + "</td>";
                            current += step;
                        } else {
                            html += "<td></td>";
                        }
                    }
                    html += "</tr>";
                }
                table.html(html);
            }, fillSeconds = function() {
                var table = picker.widget.find(".timepicker .timepicker-seconds table"), html = "", current = 0, i, j;
                table.parent().hide();
                for (i = 0; i < 3; i++) {
                    html += "<tr>";
                    for (j = 0; j < 4; j += 1) {
                        html += '<td class="second">' + padLeft(current.toString()) + "</td>";
                        current += 5;
                    }
                    html += "</tr>";
                }
                table.html(html);
            }, fillTime = function() {
                if (!picker.date) {
                    return;
                }
                var timeComponents = picker.widget.find(".timepicker span[data-time-component]"), hour = picker.date.hours(), period = picker.date.format("A");
                if (!picker.use24hours) {
                    if (hour === 0) {
                        hour = 12;
                    } else if (hour !== 12) {
                        hour = hour % 12;
                    }
                    picker.widget.find(".timepicker [data-action=togglePeriod]").text(period);
                }
                timeComponents.filter("[data-time-component=hours]").text(padLeft(hour));
                timeComponents.filter("[data-time-component=minutes]").text(padLeft(picker.date.minutes()));
                timeComponents.filter("[data-time-component=seconds]").text(padLeft(picker.date.second()));
            }, click = function(e) {
                e.stopPropagation();
                e.preventDefault();
                picker.unset = false;
                var target = $(e.target).closest("span, td, th"), month, year, step, day, oldDate = moment(picker.date);
                if (target.length === 1) {
                    if (!target.is(".disabled")) {
                        switch (target[0].nodeName.toLowerCase()) {
                          case "th":
                            switch (target[0].className) {
                              case "picker-switch":
                                showMode(1);
                                break;

                              case "prev":
                              case "next":
                                step = dpGlobal.modes[picker.viewMode].navStep;
                                if (target[0].className === "prev") {
                                    step = step * -1;
                                }
                                picker.viewDate.add(step, dpGlobal.modes[picker.viewMode].navFnc);
                                fillDate();
                                break;
                            }
                            break;

                          case "span":
                            if (target.is(".month")) {
                                month = target.parent().find("span").index(target);
                                picker.viewDate.month(month);
                            } else {
                                year = parseInt(target.text(), 10) || 0;
                                picker.viewDate.year(year);
                            }
                            if (picker.viewMode === picker.minViewMode) {
                                picker.date = moment({
                                    y: picker.viewDate.year(),
                                    M: picker.viewDate.month(),
                                    d: picker.viewDate.date(),
                                    h: picker.date.hours(),
                                    m: picker.date.minutes(),
                                    s: picker.date.seconds()
                                });
                                set();
                                notifyChange(oldDate, e.type);
                            }
                            showMode(-1);
                            fillDate();
                            break;

                          case "td":
                            if (target.is(".day")) {
                                day = parseInt(target.text(), 10) || 1;
                                month = picker.viewDate.month();
                                year = picker.viewDate.year();
                                if (target.is(".old")) {
                                    if (month === 0) {
                                        month = 11;
                                        year -= 1;
                                    } else {
                                        month -= 1;
                                    }
                                } else if (target.is(".new")) {
                                    if (month === 11) {
                                        month = 0;
                                        year += 1;
                                    } else {
                                        month += 1;
                                    }
                                }
                                picker.date = moment({
                                    y: year,
                                    M: month,
                                    d: day,
                                    h: picker.date.hours(),
                                    m: picker.date.minutes(),
                                    s: picker.date.seconds()
                                });
                                picker.viewDate = moment({
                                    y: year,
                                    M: month,
                                    d: Math.min(28, day)
                                });
                                fillDate();
                                set();
                                notifyChange(oldDate, e.type);
                            }
                            break;
                        }
                    }
                }
            }, actions = {
                incrementHours: function() {
                    checkDate("add", "hours", 1);
                },
                incrementMinutes: function() {
                    checkDate("add", "minutes", picker.options.minuteStepping);
                },
                incrementSeconds: function() {
                    checkDate("add", "seconds", 1);
                },
                decrementHours: function() {
                    checkDate("subtract", "hours", 1);
                },
                decrementMinutes: function() {
                    checkDate("subtract", "minutes", picker.options.minuteStepping);
                },
                decrementSeconds: function() {
                    checkDate("subtract", "seconds", 1);
                },
                togglePeriod: function() {
                    var hour = picker.date.hours();
                    if (hour >= 12) {
                        hour -= 12;
                    } else {
                        hour += 12;
                    }
                    picker.date.hours(hour);
                },
                showPicker: function() {
                    picker.widget.find(".timepicker > div:not(.timepicker-picker)").hide();
                    picker.widget.find(".timepicker .timepicker-picker").show();
                },
                showHours: function() {
                    picker.widget.find(".timepicker .timepicker-picker").hide();
                    picker.widget.find(".timepicker .timepicker-hours").show();
                },
                showMinutes: function() {
                    picker.widget.find(".timepicker .timepicker-picker").hide();
                    picker.widget.find(".timepicker .timepicker-minutes").show();
                },
                showSeconds: function() {
                    picker.widget.find(".timepicker .timepicker-picker").hide();
                    picker.widget.find(".timepicker .timepicker-seconds").show();
                },
                selectHour: function(e) {
                    var hour = parseInt($(e.target).text(), 10);
                    if (!picker.use24hours) {
                        if (picker.date.hours() >= 12) {
                            if (hour !== 12) {
                                hour += 12;
                            }
                        } else {
                            if (hour === 12) {
                                hour = 0;
                            }
                        }
                    }
                    picker.date.hours(hour);
                    actions.showPicker.call(picker);
                },
                selectMinute: function(e) {
                    picker.date.minutes(parseInt($(e.target).text(), 10));
                    actions.showPicker.call(picker);
                },
                selectSecond: function(e) {
                    picker.date.seconds(parseInt($(e.target).text(), 10));
                    actions.showPicker.call(picker);
                }
            }, doAction = function(e) {
                var oldDate = moment(picker.date), action = $(e.currentTarget).data("action"), rv = actions[action].apply(picker, arguments);
                stopEvent(e);
                if (!picker.date) {
                    picker.date = moment({
                        y: 1970
                    });
                }
                set();
                fillTime();
                notifyChange(oldDate, e.type);
                return rv;
            }, stopEvent = function(e) {
                e.stopPropagation();
                e.preventDefault();
            }, keydown = function(e) {
                if (e.keyCode === 27) {
                    // allow escape to hide picker
                    picker.hide();
                }
            }, change = function(e) {
                moment.locale(picker.options.language);
                var input = $(e.target), oldDate = moment(picker.date), newDate = moment(input.val(), picker.format, picker.options.useStrict);
                if (newDate.isValid() && !isInDisableDates(newDate) && isInEnableDates(newDate)) {
                    update();
                    picker.setValue(newDate);
                    notifyChange(oldDate, e.type);
                    set();
                } else {
                    picker.viewDate = oldDate;
                    picker.unset = true;
                    notifyChange(oldDate, e.type);
                    notifyError(newDate);
                }
            }, showMode = function(dir) {
                if (dir) {
                    picker.viewMode = Math.max(picker.minViewMode, Math.min(2, picker.viewMode + dir));
                }
                picker.widget.find(".datepicker > div").hide().filter(".datepicker-" + dpGlobal.modes[picker.viewMode].clsName).show();
            }, attachDatePickerEvents = function() {
                var $this, $parent, expanded, closed, collapseData;
                picker.widget.on("click", ".datepicker *", $.proxy(click, this));
                // this handles date picker clicks
                picker.widget.on("click", "[data-action]", $.proxy(doAction, this));
                // this handles time picker clicks
                picker.widget.on("mousedown", $.proxy(stopEvent, this));
                picker.element.on("keydown", $.proxy(keydown, this));
                if (picker.options.pickDate && picker.options.pickTime) {
                    picker.widget.on("click.togglePicker", ".accordion-toggle", function(e) {
                        e.stopPropagation();
                        $this = $(this);
                        $parent = $this.closest("ul");
                        expanded = $parent.find(".in");
                        closed = $parent.find(".collapse:not(.in)");
                        if (expanded && expanded.length) {
                            collapseData = expanded.data("collapse");
                            if (collapseData && collapseData.transitioning) {
                                return;
                            }
                            expanded.collapse("hide");
                            closed.collapse("show");
                            $this.find("span").toggleClass(picker.options.icons.time + " " + picker.options.icons.date);
                            if (picker.component) {
                                picker.component.find("span").toggleClass(picker.options.icons.time + " " + picker.options.icons.date);
                            }
                        }
                    });
                }
                if (picker.isInput) {
                    picker.element.on({
                        click: $.proxy(picker.show, this),
                        focus: $.proxy(picker.show, this),
                        change: $.proxy(change, this),
                        blur: $.proxy(picker.hide, this)
                    });
                } else {
                    picker.element.on({
                        change: $.proxy(change, this)
                    }, "input");
                    if (picker.component) {
                        picker.component.on("click", $.proxy(picker.show, this));
                        picker.component.on("mousedown", $.proxy(stopEvent, this));
                    } else {
                        picker.element.on("click", $.proxy(picker.show, this));
                    }
                }
            }, attachDatePickerGlobalEvents = function() {
                $(window).on("resize.datetimepicker" + picker.id, $.proxy(place, this));
                if (!picker.isInput) {
                    $(document).on("mousedown.datetimepicker" + picker.id, $.proxy(picker.hide, this));
                }
            }, detachDatePickerEvents = function() {
                picker.widget.off("click", ".datepicker *", picker.click);
                picker.widget.off("click", "[data-action]");
                picker.widget.off("mousedown", picker.stopEvent);
                if (picker.options.pickDate && picker.options.pickTime) {
                    picker.widget.off("click.togglePicker");
                }
                if (picker.isInput) {
                    picker.element.off({
                        focus: picker.show,
                        change: change,
                        click: picker.show,
                        blur: picker.hide
                    });
                } else {
                    picker.element.off({
                        change: change
                    }, "input");
                    if (picker.component) {
                        picker.component.off("click", picker.show);
                        picker.component.off("mousedown", picker.stopEvent);
                    } else {
                        picker.element.off("click", picker.show);
                    }
                }
            }, detachDatePickerGlobalEvents = function() {
                $(window).off("resize.datetimepicker" + picker.id);
                if (!picker.isInput) {
                    $(document).off("mousedown.datetimepicker" + picker.id);
                }
            }, isInFixed = function() {
                if (picker.element) {
                    var parents = picker.element.parents(), inFixed = false, i;
                    for (i = 0; i < parents.length; i++) {
                        if ($(parents[i]).css("position") === "fixed") {
                            inFixed = true;
                            break;
                        }
                    }
                    return inFixed;
                } else {
                    return false;
                }
            }, set = function() {
                moment.locale(picker.options.language);
                var formatted = "";
                if (!picker.unset) {
                    formatted = moment(picker.date).format(picker.format);
                }
                getPickerInput().val(formatted);
                picker.element.data("date", formatted);
                if (!picker.options.pickTime) {
                    picker.hide();
                }
            }, checkDate = function(direction, unit, amount) {
                moment.locale(picker.options.language);
                var newDate;
                if (direction === "add") {
                    newDate = moment(picker.date);
                    if (newDate.hours() === 23) {
                        newDate.add(amount, unit);
                    }
                    newDate.add(amount, unit);
                } else {
                    newDate = moment(picker.date).subtract(amount, unit);
                }
                if (isInDisableDates(moment(newDate.subtract(amount, unit))) || isInDisableDates(newDate)) {
                    notifyError(newDate.format(picker.format));
                    return;
                }
                if (direction === "add") {
                    picker.date.add(amount, unit);
                } else {
                    picker.date.subtract(amount, unit);
                }
                picker.unset = false;
            }, isInDisableDates = function(date, timeUnit) {
                moment.locale(picker.options.language);
                var maxDate = moment(picker.options.maxDate, picker.format, picker.options.useStrict), minDate = moment(picker.options.minDate, picker.format, picker.options.useStrict);
                if (timeUnit) {
                    maxDate = maxDate.endOf(timeUnit);
                    minDate = minDate.startOf(timeUnit);
                }
                if (date.isAfter(maxDate) || date.isBefore(minDate)) {
                    return true;
                }
                if (picker.options.disabledDates === false) {
                    return false;
                }
                return picker.options.disabledDates[date.format("YYYY-MM-DD")] === true;
            }, isInEnableDates = function(date) {
                moment.locale(picker.options.language);
                if (picker.options.enabledDates === false) {
                    return true;
                }
                return picker.options.enabledDates[date.format("YYYY-MM-DD")] === true;
            }, indexGivenDates = function(givenDatesArray) {
                // Store given enabledDates and disabledDates as keys.
                // This way we can check their existence in O(1) time instead of looping through whole array.
                // (for example: picker.options.enabledDates['2014-02-27'] === true)
                var givenDatesIndexed = {}, givenDatesCount = 0, i;
                for (i = 0; i < givenDatesArray.length; i++) {
                    if (moment.isMoment(givenDatesArray[i]) || givenDatesArray[i] instanceof Date) {
                        dDate = moment(givenDatesArray[i]);
                    } else {
                        dDate = moment(givenDatesArray[i], picker.format, picker.options.useStrict);
                    }
                    if (dDate.isValid()) {
                        givenDatesIndexed[dDate.format("YYYY-MM-DD")] = true;
                        givenDatesCount++;
                    }
                }
                if (givenDatesCount > 0) {
                    return givenDatesIndexed;
                }
                return false;
            }, padLeft = function(string) {
                string = string.toString();
                if (string.length >= 2) {
                    return string;
                }
                return "0" + string;
            }, getTemplate = function() {
                var headTemplate = "<thead>" + "<tr>" + '<th class="prev">&lsaquo;</th><th colspan="' + (picker.options.calendarWeeks ? "6" : "5") + '" class="picker-switch"></th><th class="next">&rsaquo;</th>' + "</tr>" + "</thead>", contTemplate = '<tbody><tr><td colspan="' + (picker.options.calendarWeeks ? "8" : "7") + '"></td></tr></tbody>', template = '<div class="datepicker-days">' + '<table class="table-condensed">' + headTemplate + "<tbody></tbody></table>" + "</div>" + '<div class="datepicker-months">' + '<table class="table-condensed">' + headTemplate + contTemplate + "</table>" + "</div>" + '<div class="datepicker-years">' + '<table class="table-condensed">' + headTemplate + contTemplate + "</table>" + "</div>", ret = "";
                if (picker.options.pickDate && picker.options.pickTime) {
                    ret = '<div class="bootstrap-datetimepicker-widget' + (picker.options.sideBySide ? " timepicker-sbs" : "") + (picker.use24hours ? " usetwentyfour" : "") + ' dropdown-menu" style="z-index:9999 !important;">';
                    if (picker.options.sideBySide) {
                        ret += '<div class="row">' + '<div class="col-sm-6 datepicker">' + template + "</div>" + '<div class="col-sm-6 timepicker">' + tpGlobal.getTemplate() + "</div>" + "</div>";
                    } else {
                        ret += '<ul class="list-unstyled">' + "<li" + (picker.options.collapse ? ' class="collapse in"' : "") + ">" + '<div class="datepicker">' + template + "</div>" + "</li>" + '<li class="picker-switch accordion-toggle"><a class="btn" style="width:100%"><span class="' + picker.options.icons.time + '"></span></a></li>' + "<li" + (picker.options.collapse ? ' class="collapse"' : "") + ">" + '<div class="timepicker">' + tpGlobal.getTemplate() + "</div>" + "</li>" + "</ul>";
                    }
                    ret += "</div>";
                    return ret;
                }
                if (picker.options.pickTime) {
                    return '<div class="bootstrap-datetimepicker-widget dropdown-menu">' + '<div class="timepicker">' + tpGlobal.getTemplate() + "</div>" + "</div>";
                }
                return '<div class="bootstrap-datetimepicker-widget dropdown-menu">' + '<div class="datepicker">' + template + "</div>" + "</div>";
            }, dpGlobal = {
                modes: [ {
                    clsName: "days",
                    navFnc: "month",
                    navStep: 1
                }, {
                    clsName: "months",
                    navFnc: "year",
                    navStep: 1
                }, {
                    clsName: "years",
                    navFnc: "year",
                    navStep: 10
                } ]
            }, tpGlobal = {
                hourTemplate: '<span data-action="showHours"   data-time-component="hours"   class="timepicker-hour"></span>',
                minuteTemplate: '<span data-action="showMinutes" data-time-component="minutes" class="timepicker-minute"></span>',
                secondTemplate: '<span data-action="showSeconds"  data-time-component="seconds" class="timepicker-second"></span>'
            };
            tpGlobal.getTemplate = function() {
                return '<div class="timepicker-picker">' + '<table class="table-condensed">' + "<tr>" + '<td><a href="#" class="btn" data-action="incrementHours"><span class="' + picker.options.icons.up + '"></span></a></td>' + '<td class="separator"></td>' + "<td>" + (picker.options.useMinutes ? '<a href="#" class="btn" data-action="incrementMinutes"><span class="' + picker.options.icons.up + '"></span></a>' : "") + "</td>" + (picker.options.useSeconds ? '<td class="separator"></td><td><a href="#" class="btn" data-action="incrementSeconds"><span class="' + picker.options.icons.up + '"></span></a></td>' : "") + (picker.use24hours ? "" : '<td class="separator"></td>') + "</tr>" + "<tr>" + "<td>" + tpGlobal.hourTemplate + "</td> " + '<td class="separator">:</td>' + "<td>" + (picker.options.useMinutes ? tpGlobal.minuteTemplate : '<span class="timepicker-minute">00</span>') + "</td> " + (picker.options.useSeconds ? '<td class="separator">:</td><td>' + tpGlobal.secondTemplate + "</td>" : "") + (picker.use24hours ? "" : '<td class="separator"></td>' + '<td><button type="button" class="btn btn-primary" data-action="togglePeriod"></button></td>') + "</tr>" + "<tr>" + '<td><a href="#" class="btn" data-action="decrementHours"><span class="' + picker.options.icons.down + '"></span></a></td>' + '<td class="separator"></td>' + "<td>" + (picker.options.useMinutes ? '<a href="#" class="btn" data-action="decrementMinutes"><span class="' + picker.options.icons.down + '"></span></a>' : "") + "</td>" + (picker.options.useSeconds ? '<td class="separator"></td><td><a href="#" class="btn" data-action="decrementSeconds"><span class="' + picker.options.icons.down + '"></span></a></td>' : "") + (picker.use24hours ? "" : '<td class="separator"></td>') + "</tr>" + "</table>" + "</div>" + '<div class="timepicker-hours" data-action="selectHour">' + '<table class="table-condensed"></table>' + "</div>" + '<div class="timepicker-minutes" data-action="selectMinute">' + '<table class="table-condensed"></table>' + "</div>" + (picker.options.useSeconds ? '<div class="timepicker-seconds" data-action="selectSecond"><table class="table-condensed"></table></div>' : "");
            };
            picker.destroy = function() {
                detachDatePickerEvents();
                detachDatePickerGlobalEvents();
                picker.widget.remove();
                picker.element.removeData("DateTimePicker");
                if (picker.component) {
                    picker.component.removeData("DateTimePicker");
                }
            };
            picker.show = function(e) {
                if (getPickerInput().prop("disabled")) {
                    return;
                }
                if (picker.options.useCurrent) {
                    if (getPickerInput().val() === "") {
                        if (picker.options.minuteStepping !== 1) {
                            var mDate = moment(), rInterval = picker.options.minuteStepping;
                            mDate.minutes(Math.round(mDate.minutes() / rInterval) * rInterval % 60).seconds(0);
                            picker.setValue(mDate.format(picker.format));
                        } else {
                            picker.setValue(moment().format(picker.format));
                        }
                        notifyChange("", e.type);
                    }
                }
                // if this is a click event on the input field and picker is already open don't hide it
                if (e && e.type === "click" && picker.isInput && picker.widget.hasClass("picker-open")) {
                    return;
                }
                if (picker.widget.hasClass("picker-open")) {
                    picker.widget.hide();
                    picker.widget.removeClass("picker-open");
                } else {
                    picker.widget.show();
                    picker.widget.addClass("picker-open");
                }
                picker.height = picker.component ? picker.component.outerHeight() : picker.element.outerHeight();
                place();
                picker.element.trigger({
                    type: "dp.show",
                    date: moment(picker.date)
                });
                attachDatePickerGlobalEvents();
                if (e) {
                    stopEvent(e);
                }
            };
            picker.disable = function() {
                var input = getPickerInput();
                if (input.prop("disabled")) {
                    return;
                }
                input.prop("disabled", true);
                detachDatePickerEvents();
            };
            picker.enable = function() {
                var input = getPickerInput();
                if (!input.prop("disabled")) {
                    return;
                }
                input.prop("disabled", false);
                attachDatePickerEvents();
            };
            picker.hide = function() {
                // Ignore event if in the middle of a picker transition
                var collapse = picker.widget.find(".collapse"), i, collapseData;
                for (i = 0; i < collapse.length; i++) {
                    collapseData = collapse.eq(i).data("collapse");
                    if (collapseData && collapseData.transitioning) {
                        return;
                    }
                }
                picker.widget.hide();
                picker.widget.removeClass("picker-open");
                picker.viewMode = picker.startViewMode;
                showMode();
                picker.element.trigger({
                    type: "dp.hide",
                    date: moment(picker.date)
                });
                detachDatePickerGlobalEvents();
            };
            picker.setValue = function(newDate) {
                moment.locale(picker.options.language);
                if (!newDate) {
                    picker.unset = true;
                    set();
                } else {
                    picker.unset = false;
                }
                if (!moment.isMoment(newDate)) {
                    newDate = newDate instanceof Date ? moment(newDate) : moment(newDate, picker.format, picker.options.useStrict);
                } else {
                    newDate = newDate.locale(picker.options.language);
                }
                if (newDate.isValid()) {
                    picker.date = newDate;
                    set();
                    picker.viewDate = moment({
                        y: picker.date.year(),
                        M: picker.date.month()
                    });
                    fillDate();
                    fillTime();
                } else {
                    notifyError(newDate);
                }
            };
            picker.getDate = function() {
                if (picker.unset) {
                    return null;
                }
                return moment(picker.date);
            };
            picker.setDate = function(date) {
                var oldDate = moment(picker.date);
                if (!date) {
                    picker.setValue(null);
                } else {
                    picker.setValue(date);
                }
                notifyChange(oldDate, "function");
            };
            picker.setDisabledDates = function(dates) {
                picker.options.disabledDates = indexGivenDates(dates);
                if (picker.viewDate) {
                    update();
                }
            };
            picker.setEnabledDates = function(dates) {
                picker.options.enabledDates = indexGivenDates(dates);
                if (picker.viewDate) {
                    update();
                }
            };
            picker.setMaxDate = function(date) {
                if (date === undefined) {
                    return;
                }
                if (moment.isMoment(date) || date instanceof Date) {
                    picker.options.maxDate = moment(date);
                } else {
                    picker.options.maxDate = moment(date, picker.format, picker.options.useStrict);
                }
                if (picker.viewDate) {
                    update();
                }
            };
            picker.setMinDate = function(date) {
                if (date === undefined) {
                    return;
                }
                if (moment.isMoment(date) || date instanceof Date) {
                    picker.options.minDate = moment(date);
                } else {
                    picker.options.minDate = moment(date, picker.format, picker.options.useStrict);
                }
                if (picker.viewDate) {
                    update();
                }
            };
            init();
        };
        $.fn.datetimepicker = function(options) {
            return this.each(function() {
                var $this = $(this), data = $this.data("DateTimePicker");
                if (!data) {
                    $this.data("DateTimePicker", new DateTimePicker(this, options));
                }
            });
        };
        $.fn.datetimepicker.defaults = {
            format: false,
            pickDate: true,
            pickTime: true,
            useMinutes: true,
            useSeconds: false,
            useCurrent: true,
            calendarWeeks: false,
            minuteStepping: 1,
            minDate: moment({
                y: 1900
            }),
            maxDate: moment().add(100, "y"),
            showToday: true,
            collapse: true,
            language: moment.locale(),
            defaultDate: "",
            disabledDates: false,
            enabledDates: false,
            icons: {},
            useStrict: false,
            direction: "auto",
            sideBySide: false,
            daysOfWeekDisabled: [],
            widgetParent: false
        };
    });
});

define("value/datetimepicker/3.1.3/datetimepicker-debug.css", [], function() {
    seajs.importStyle(".bootstrap-datetimepicker-widget{top:0;left:0;width:250px;padding:4px;margin-top:1px;z-index:99999!important;border-radius:4px}.bootstrap-datetimepicker-widget.timepicker-sbs{width:600px}.bootstrap-datetimepicker-widget.bottom:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:7px}.bootstrap-datetimepicker-widget.bottom:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:8px}.bootstrap-datetimepicker-widget.top:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.top:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;position:absolute;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget .dow{width:14.2857%}.bootstrap-datetimepicker-widget.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget>ul{list-style-type:none;margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget table[data-hour-format=\"12\"] .separator{width:4px;padding:0;margin:0}.bootstrap-datetimepicker-widget .datepicker>div{display:none}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget td,.bootstrap-datetimepicker-widget th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget td.cw{font-size:10px;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget td.day:hover,.bootstrap-datetimepicker-widget td.hour:hover,.bootstrap-datetimepicker-widget td.minute:hover,.bootstrap-datetimepicker-widget td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget td.old,.bootstrap-datetimepicker-widget td.new{color:#777}.bootstrap-datetimepicker-widget td.today{position:relative}.bootstrap-datetimepicker-widget td.today:before{content:'';display:inline-block;border-left:7px solid transparent;border-bottom:7px solid #428bca;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget td.active,.bootstrap-datetimepicker-widget td.active:hover{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget td.disabled,.bootstrap-datetimepicker-widget td.disabled:hover{background:0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget td span:hover{background:#eee}.bootstrap-datetimepicker-widget td span.active{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget td span.old{color:#777}.bootstrap-datetimepicker-widget td span.disabled,.bootstrap-datetimepicker-widget td span.disabled:hover{background:0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget th.picker-switch{width:145px}.bootstrap-datetimepicker-widget th.next,.bootstrap-datetimepicker-widget th.prev{font-size:21px}.bootstrap-datetimepicker-widget th.disabled,.bootstrap-datetimepicker-widget th.disabled:hover{background:0;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget thead tr:first-child th:hover{background:#eee}.input-group.date .input-group-addon span{display:block;cursor:pointer;width:16px;height:16px}.bootstrap-datetimepicker-widget.left-oriented:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.left-oriented:after{left:auto;right:7px}.bootstrap-datetimepicker-widget ul.list-unstyled li div.timepicker div.timepicker-picker table.table-condensed tbody>tr>td{padding:0!important}@media screen and (max-width:767px){.bootstrap-datetimepicker-widget.timepicker-sbs{width:283px}}");
});
